Re: [SQL] Problems with default date 'now' - Mailing list pgsql-sql

From Herouth Maoz
Subject Re: [SQL] Problems with default date 'now'
Date
Msg-id l03110703b1a4267df0d0@[147.233.159.109]
Whole thread Raw
In response to Re: [SQL] Problems with default date 'now'  (Petter Reinholdtsen <pere@td.org.uit.no>)
List pgsql-sql
At 14:43 +0300 on 10/6/98, Petter Reinholdtsen wrote:


> Nope, that did not work.
>
> I get this reply from psql:
>
>   WARN:parser: parse error at or near "current_date"
>
> What is wrong.  Is this something new in PostgreSQL after v6.2.1?

Yes, it's something new. I still work with 6.2.1, so here's the deal:

Using a constant default value for a column causes the constant to be
evaluated once, at the creation of the table. That value is then kept with
the table schema, which means each row will be stamped with the same date.

In order to avoid that, you have to use a function as a default value.
Functions are evaluated each time a column is created. For this purpose, I
created an SQL function like this:

CREATE FUNCTION current_datetime() RETURNS datetime
AS 'SELECT ''now''::datetime'
LANGUAGE 'sql';

And I define the table as (in my case):

CREATE TABLE session
(
        session         int4
                        DEFAULT nextval( 'sess_no' )
                        NOT NULL,
        created         datetime
                        DEFAULT current_datetime() -- See here
                        NOT NULL,
        webuser         char(30)
);

You can define the function once, and use it for all the applications using
the same database.

Herouth

--
Herouth Maoz, Internet developer.
Open University of Israel - Telem project
http://telem.openu.ac.il/~herutma



pgsql-sql by date:

Previous
From: Petter Reinholdtsen
Date:
Subject: Re: [SQL] Problems with default date 'now'
Next
From: "Jackson, DeJuan"
Date:
Subject: RE: [SQL] Problems with default date 'now'